package String;

//给定一个字符串，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。
//
//
//
// 示例：
//
// 输入："Let's take LeetCode contest"
//输出："s'teL ekat edoCteeL tsetnoc"
//
//
//
//
// 提示：
//
//
// 在字符串中，每个单词由单个空格分隔，并且字符串中不会有任何额外的空格。
//
// Related Topics 双指针 字符串 👍 339 👎 0
class LC_557 {

    public static String reverseWords(String s) {
        StringBuilder stringBuilder = new StringBuilder();
        char[] chars = s.toCharArray();
        int n = chars.length;
        int i=0,j=0;

        while(j<n){
            //找到第一个空格的下标
            while(j<n&&chars[j]!=' '){
                j++;
            }
            String str = new StringBuilder(s.substring(i,j)).reverse().toString();
            str = j==n ? str:str+' ';
            stringBuilder.append(str);
            j++;
            i=j;
        }
        return stringBuilder.toString();

    }

    public static void main(String[] args) {
        String str = new String("ni hao ya");
        System.out.println(reverseWords(str));
    }
}
